package com.qf.factory;

import java.util.Properties;

/**
 * @author fy
 * @version V1.0
 * @Project day41
 * @Package com.qf.factory
 * @Description:
 * @Date 2022/6/2 9:52
 */
public class MyBeanFactory {
    private Properties properties = new Properties();

    /**
     * 无参构造
     */
    public MyBeanFactory() {
    }


    /**
     * 有参构造
     * @param config 配置文件名字
     * @throws Exception
     */
    public MyBeanFactory(String config) throws Exception{
        //通过输入流根据配置文件的名字和路径, 读取配置文件到properties对象中
        //这里config就是"/bean.properties"
        properties.load(MyBeanFactory.class.getResourceAsStream(config));
    }
    /**
     * 获取java类对象, 也就是JavaBean对象, 对象由这个工厂产生
     */
    public Object getBean(String className)throws Exception{
        //1. 获取类的路径, 也就是实现类的全限定名
        //例如 : com.qf.service.UserServiceImpl1
        String classPath = properties.getProperty(className);
        if (classPath !=null){
            //反射
            Class clazz = Class.forName(classPath);
            //返回反射对象
            return clazz.newInstance();

        }
        return null;

    }
}
